﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Linq;
using QuanLyDaiLy.Model;
using System.Data.OleDb;

namespace QuanLyDaiLy.Context
{
    public class CChiTietPhieuXuatContext :DataContext, IContext<CChiTietPhieuXuat>
    {
        #region Variable
        Table<CChiTietPhieuXuat> table;
        #endregion

        #region Constructor
        public CChiTietPhieuXuatContext(OleDbConnection connection)
            : base(connection)
        {
            table = GetTable<CChiTietPhieuXuat>();
        }
        #endregion

        #region Public Method
        /// <summary>
        /// Thêm chi tiết phiếu xuất vào bảng ChiTietPhieuXuat
        /// </summary>
        /// <param name="obj">chi tiết phiếu xuất cần nhập</param>
        public void Them(CChiTietPhieuXuat obj)
        {
            table.InsertOnSubmit(obj);
            this.SubmitChanges();
        }

        /// <summary>
        /// Cập nhật thông tin chi tiết phiếu xuât
        /// </summary>
        /// <param name="obj">CChiTietPhieuXuat đã cập nhật</param>
        public void CapNhat(CChiTietPhieuXuat obj)
        {
            var chitiet = LayThongTin(obj.MaChiTiet);

            chitiet.Initialize(obj.MaPhieu, obj.MaMatHang, obj.MaDonViTinh, obj.SoLuong, obj.DonGia, obj.ThanhTien);
            this.SubmitChanges();
        }

        /// <summary>
        /// Xóa chi tiết phiếu xuất
        /// </summary>
        /// <param name="maso">MaChiTiet cần xóa</param>
        public void Xoa(ulong maso)
        {
            var chitiet = LayThongTin(maso);

            table.DeleteOnSubmit(chitiet);
            this.SubmitChanges();
        }

        /// <summary>
        /// Lấy thông tin của chi tiết phiếu xuất từ mã số
        /// </summary>
        /// <param name="maso">MaChiTiet cần lấy</param>
        /// <returns>Đối tượng CChiTietPhieuXuat</returns>
        public CChiTietPhieuXuat LayThongTin(ulong maso)
        {
            var query = from e in table where e.MaChiTiet == maso select e;

            return query.First();
        }

        /// <summary>
        /// Lấy danh sách tât cả phiểu xuất
        /// </summary>
        /// <returns>Danh sách tất cả phiếu xuất</returns>
        public List<CChiTietPhieuXuat> LayDanhSachTatCa()
        {
            var query = from e in table select e;

            return query.ToList();
        }
        #endregion
    }
}
